package com.glsc.ngateway.platform.utils.report;

import lombok.AllArgsConstructor;
import lombok.Builder;
import lombok.Data;
import lombok.NoArgsConstructor;
import org.springframework.web.multipart.MultipartFile;

import javax.validation.constraints.NotNull;
import java.util.ArrayList;
import java.util.List;
import java.util.function.Consumer;

/**
 * 报表上传功能上下文
 * @author xuchang
 */
@Data
@Builder
@AllArgsConstructor
@NoArgsConstructor
public class ReportUploadContext<T, CR> {
    /**
     * 报表配置项
     */
    @NotNull
    ReportFileConfigEnum config;
    /**
     * 上传文件
     */
    private MultipartFile file;
    /**
     * 上传多文件
     */
    private MultipartFile[] files;
    /**
     * 文件读取结果
     */
    @Builder.Default
    private List<T> readRes = new ArrayList<>();
    /**
     * 数据检查方法
     */
    private Consumer<T> check;
    /**
     * 检查通过
     */
    @Builder.Default
    private boolean checkPass = true;
    /**
     * 检查结果
     */
    @Builder.Default
    private List<CR> checkRes = new ArrayList<>();
}
